﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Infrastructure.Model
{
    /// <summary>
    /// 这是一个自定义的特性（Attribute），用于标记某个方法，以指示该方法在执行时不进行追踪。
    /// 该特性主要用于禁用方法执行时的请求追踪功能，以避免生成不必要的追踪数据。
    /// </summary>
    [AttributeUsage(AttributeTargets.Method)]
    public class NoTraceAttribute : System.Attribute
    {
        /// <summary>
        /// 获取或设置是否启用追踪。默认情况下该值为 false，表示禁用追踪。
        /// </summary>
        public bool IsTracing { get; set; }

        /// <summary>
        /// 获取或设置禁用追踪的原因。该字段用于记录为什么该方法禁用追踪。
        /// </summary>
        public string Reason { get; set; }

        /// <summary>
        /// 构造函数，初始化一个新的 NoTraceAttribute 实例，接受一个禁用追踪的原因。
        /// 默认情况下，追踪被禁用。
        /// </summary>
        /// <param name="reason">禁用追踪的原因，通常用于记录禁用的理由。</param>
        public NoTraceAttribute(string reason)
        {
            // 禁用追踪
            IsTracing = false;
            // 设置禁用追踪的原因
            Reason = reason;
        }
    }
}
